import java.util.logging.Level;
import java.util.logging.Logger;


public class Bote {

	int pasajeros=0;
	String piloto;
	boolean tienePiloto=false;
	String ubicacion;
	int viajes;
	int p;
	
	public int getPasajeros() {
		return pasajeros;
	}
	public void setPasajeros(int pasajeros) {
		this.pasajeros = pasajeros;
	}
	public synchronized String getPiloto() {
		return piloto;
	}
	public synchronized void setPiloto(String piloto) {
		this.piloto = piloto;
	}
	public synchronized boolean isTienePiloto() {
		return tienePiloto;
	}
	public synchronized void setTienePiloto(boolean tienePiloto) {
		this.tienePiloto = tienePiloto;
	}
	public String getUbicacion() {
		return ubicacion;
	}
	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}

	
	public synchronized void dejarBoteOahu(){
		this.setPiloto("");
		this.setTienePiloto(false);
	}
	public synchronized void viaje(){
		while(!tienePiloto){
			try{
				this.waitObj();	
			}catch(Exception ex){}
		}
	
		if(this.getUbicacion()=="Oahu"){
			if(this.getPiloto().contains("Ninio")&&this.getPasajeros()!=2){
				this.waitObj();
			}else{
			System.out.println(this.getPiloto()+" rema de Oahu a Molokai.");
			this.setUbicacion("Molokai");
			}
		}else{
			System.out.println(this.getPiloto()+" rema de Molokai a Oahu. ");
			this.setUbicacion("Oahu");
		}
		this.notifyObj();
	}

	public synchronized void desembarco(String viajero){
		System.out.println(viajero+" desembarca en "+this.getUbicacion()+".");
		this.tienePiloto=false;
		this.setPiloto("");
		this.setPasajeros(this.getPasajeros()-1);
	
	}

	 public synchronized void notifyObj() {
	        notify();
	    }

	    public synchronized void waitObj() {
	        try {
	            wait();
	        } catch (InterruptedException ex) {
	            Logger.getLogger(Thread.class.getName()).log(Level.SEVERE, null, ex);
	        }

	    }
		public void Pasajero(String nombre) {
			System.out.println(nombre+" se sube al bote, piloto: "+this.getPiloto());
			this.viajes();
		}
	public void viajes(){
		this.viajes+=1;
	}
}